package com.zhongwang.mms.module.purchase.model;

import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.format.DateTimeFormat;
import com.alibaba.excel.annotation.format.NumberFormat;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;


import java.util.Calendar;
import java.util.Date;

/**
 * @author 徐一贺
 * @className PurInvQueryModel
 * @description 外购件库存检索模型
 * @date 2021/1/23 10:36
 * @versron ver 1.0
 */
@Data
public class PurInvQueryModel {
    /**
     * 主键
     */
    @ExcelIgnore
    private Integer ityId;

    /**
     * 物料编码
     * 联合主键：用来验证是update还是insert
     */
    @ExcelIgnore
    private String ityMatCode;

    /**
     * 物料描述
     */
    @ExcelProperty(value = "物料描述", index = 0)
    private String ityMatDesc;

    /**
     * SAP物料编码
     */
    @ExcelProperty(value = "SAP物料编码", index = 1)
    private String itySapCode;

    /**
     * 项目编号
     */
    @ExcelProperty(value = "项目编号", index = 6)
    private String ityProCode;

    /**
     * 项目名称
     */
    @ExcelProperty(value = "项目名称", index = 7)
    private String ityProName;

    /**
     * 所属部位信息
     */
    @ExcelIgnore
    private String ityPart;

    /**
     * 跟踪号
     */
    @ExcelProperty(value = "跟踪号", index = 9)
    private String ityTrackCode;

    /**
     * 数量
     */
    @ExcelProperty(value = "数量", index = 2)
    private Double ityNum;

    /**
     * 重量
     */
    @ExcelIgnore
    private Double ityWeight;

    /**
     * 可用数量
     */
    @ExcelIgnore
    private Double ityAvaNum;

    /**
     * 可用重量
     */
    @ExcelIgnore
    private Double ityAvaWeight;

    /**
     * 数量单位
     */
    @ExcelProperty(value = "单位", index = 3)
    private String ityNumUnit;

    /**
     * 重量单位
     */
    @ExcelIgnore
    private String ityWeightUnit;

    /**
     * 单价
     */
    @ExcelProperty(value = "单价", index = 4)
    private Double ityPrice;

    /**
     * 库存金额
     */
    @ExcelProperty(value = "金额", index = 5)
    private Double ityAmount;

    /**
     * 品牌
     */
    @ExcelIgnore
    private String ityBrand;

    /**
     * 规格型号
     */
    @ExcelIgnore
    private String itySat;

    /**
     * 仓库
     */
    @ExcelIgnore
    private Integer ityWhiId;
    /**
     * 仓库们
     */
    @ExcelIgnore
    private String ityWhiIds;

    /**
     * 区位
     */
    @ExcelProperty(value = "区位", index = 13)
    private String ityPosition;
    /**
     * 区位
     */
    @ExcelProperty(value = "箱号", index = 14)
    private String ityCaseNo;

    /**
     * 备注
     */
    @ExcelProperty(value = "备注", index = 11)
    private String ityRemark;

    /**
     * 记账日期
     */
    @ExcelProperty(value = "记账日期", index = 15)
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")//这个是限制日期格式的
    @DateTimeFormat(value = "yyyy-MM-dd")//这个是限制日期格式的
    private Date ityBookkeepingDate;

    /**
     * 数据状态
     * 0：删除  1：正常 2：上锁（盘点/调整）
     */
    @ExcelIgnore
    private Integer ityDataStatus;

    /**
     * 外键：入库单明细行号，依赖入库单明细主键
     */
    @ExcelIgnore
    private Integer ityRowNo;

    /**
     * 在库类型：
     * 1是库存在库，2是项目在库
     */
    @ExcelIgnore
    private Integer ityStockType;


    /**
     * 项目ID
     */
    @ExcelIgnore
    private Integer proProjectId;

    /**
     * 项目状态：
     * 1=待制作
     * 2=待制作
     * 3=完成
     * 4=暂缓
     * 5=无状态
     */
    @ExcelIgnore
    private Integer proProductionStatus;

    /**
     * 仓库类型
     */
    @ExcelIgnore
    private String whiType;

    //新建字段：
    /**
     * 虚拟字段，页面显示使用：
     * 项目状态
     */
    @ExcelProperty(value = "项目状态", index = 8)
    private String proStatusText;
    /**
     * 虚拟字段，页面显示使用
     * 在库类型：库存在库，项目在库
     */
    @ExcelProperty(value = "在库类型", index = 10)
    private String stockType;

    /**
     * 查询字段，页面查询使用：
     * 项目状态
     */
    @ExcelIgnore
    private Integer proStatus;

    /**
     * 虚拟字段，页面显示使用：
     * 仓库名称
     */
    @ExcelProperty(value = "仓库", index = 12)
    private String whiName;

    /**
     * 查询字段，页面查询使用：物料信息
     */
    @ExcelIgnore
    private String ityMatAll;

    /**
     * 虚拟字段，页面判断所用，文件数目
     */
    @ExcelIgnore
    private Integer fileCount;

    /**
     * 临时表名
     */
    @ExcelIgnore
    private String tempTableName;

    @ExcelIgnore
    private Integer topCount;

    @ExcelIgnore
    private Integer notHaveTopCount;
    /**
     * 0或者NULL代表非与串料有关，1代表由于串料生成的库存信息，2代表被串料的库存信息。
     */
    @ExcelIgnore
    private Integer ityChangeFlag;

    /**
     * 0或者NULL代表非与库存划项目有关，1代表由于库存划项目生成的库存信息，2代表被库存划项目的库存信息。
     */
    @ExcelIgnore
    private Integer ityInvProFlag;

    /**
     * 0或者NULL代表调整过，1代表被调整过。
     */
    @ExcelIgnore
    private Integer ityAdjustFlag;

    /**
     * 0或者NULL代表非与项目划库存有关，1代表由于项目化库存生成的库存信息，2代表被项目化库存的库存信息。
     */
    @ExcelIgnore
    private Integer ityProInvFlag;

    /**
     * 0或者NULL代表没有台账信息，1代表拥有台账信息。
     */
    @ExcelIgnore
    private Integer ityMaterielInfoFlag;

    /**
     * 0或者NULL代表没有附件信息，1代表拥有附件信息。
     */
    @ExcelIgnore
    private Integer ityAnnexFlag;
    /**
     * 记账日期开始
     */
    @ExcelIgnore
    private Date startDate;
    /**
     * 记账日期结束
     */
    @ExcelIgnore
    private Date endDate;

    public Date getEndDate(Date endDate) {
        if (endDate != null) {
            Calendar cal = Calendar.getInstance();
            cal.setTime(endDate);
            cal.add(Calendar.DAY_OF_YEAR, 1);
            endDate = cal.getTime();
        }
        return endDate;
    }

    /**
     * 是否可串料 0=是 1=否（原材料）
     */
    @ExcelIgnore
    private Integer prodChaMat;
    /**
     * 是否可串料 0 =是 1 =否（外购件）
     */
    @ExcelIgnore
    private String prodChaPurStr;
    /**
     * 页面标题
     */
    @ExcelIgnore
    private String title;
    /**
     * 机械备件库类型
     */
    @ExcelIgnore
    private String ityRemarkType;
    private String contractNo;
}
